Java Database Connectivity (JDBC) হল Java API যা ডেটাবেসের সঙ্গে যোগাযোগ করতে সাহায্য করে। JDBC-তে ডেটাবেসের সাথে SQL কুয়েরি চালানোর জন্য তিনটি প্রধান ধরণের Statement ব্যবহৃত হয়: Statement, PreparedStatement, এবং CallableStatement। প্রতিটিরই আলাদা ব্যবহার এবং সুবিধা রয়েছে।
Statement হল JDBC-তে SQL কুয়েরি চালানোর জন্য সাধারণত ব্যবহৃত ক্লাস। এটি ডেটাবেসে SQL স্টেটমেন্ট এক্সিকিউট করতে ব্যবহৃত হয় এবং এটি SQL কুয়েরি তৈরি করার জন্য কোনো প্রি-কনফিগারেশন বা প্যারামিটারাইজেশন করতে দেয় না।
import java.sql.*;
public class StatementExample {
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
// ডেটাবেস কানেকশন তৈরি
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "user", "password");
// Statement তৈরি
stmt = conn.createStatement();
// SQL কুয়েরি রান করা
String query = "SELECT * FROM employee";
rs = stmt.executeQuery(query);
// রেজাল্ট প্রসেস করা
while (rs.next()) {
System.out.println("Employee ID: " + rs.getInt("id"));
System.out.println("Employee Name: " + rs.getString("name"));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (rs != null) rs.close();
if (stmt != null) stmt.close();
if (conn != null) conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
PreparedStatement হল একটি উন্নত সংস্করণ যা SQL কুয়েরি নিরাপদভাবে এবং অধিক কার্যকরভাবে চালাতে সহায়তা করে। এতে SQL কুয়েরি তৈরি করার সময় প্যারামিটারাইজেশন (parameterization) করা যায়, যা SQL ইনজেকশন প্রতিরোধ করে এবং কোডের পুনরাবৃত্তি কমায়।
import java.sql.*;
public class PreparedStatementExample {
public static void main(String[] args) {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
// ডেটাবেস কানেকশন তৈরি
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "user", "password");
// PreparedStatement তৈরি
String query = "SELECT * FROM employee WHERE id = ?";
pstmt = conn.prepareStatement(query);
// প্যারামিটার সেট করা
pstmt.setInt(1, 101);
// কুয়েরি রান করা
rs = pstmt.executeQuery();
// রেজাল্ট প্রসেস করা
while (rs.next()) {
System.out.println("Employee ID: " + rs.getInt("id"));
System.out.println("Employee Name: " + rs.getString("name"));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (rs != null) rs.close();
if (pstmt != null) pstmt.close();
if (conn != null) conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
CallableStatement ব্যবহার করা হয় যখন আপনি SQL স্টোরড প্রোসিডিউর বা ফাংশন কল করতে চান। এটি SQL স্টেটমেন্টের মতো কাজ করে, তবে এটি স্টোরড প্রোসিডিউর বা ফাংশনকে কল করতে ব্যবহৃত হয়, যা সাধারণত ডেটাবেস সাইডে নির্দিষ্ট লজিক বা ফাংশনালিটি বাস্তবায়ন করে।
import java.sql.*;
public class CallableStatementExample {
public static void main(String[] args) {
Connection conn = null;
CallableStatement cstmt = null;
ResultSet rs = null;
try {
// ডেটাবেস কানেকশন তৈরি
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "user", "password");
// স্টোরড প্রোসিডিউর কল করার জন্য CallableStatement তৈরি
String query = "{call getEmployeeDetails(?)}";
cstmt = conn.prepareCall(query);
// ইনপুট প্যারামিটার সেট করা
cstmt.setInt(1, 101);
// স্টোরড প্রোসিডিউর রান করা
rs = cstmt.executeQuery();
// রেজাল্ট প্রসেস করা
while (rs.next()) {
System.out.println("Employee ID: " + rs.getInt("id"));
System.out.println("Employee Name: " + rs.getString("name"));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (rs != null) rs.close();
if (cstmt != null) cstmt.close();
if (conn != null) conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
common.read_more